package 可重入锁.lock的不同方式.公平锁;

import java.util.concurrent.locks.ReentrantLock;

public class FairLock implements Runnable{
    private ReentrantLock reentrantLock = new ReentrantLock(true);// 公平锁
    @Override
    public void run() {
        while (true){
            reentrantLock.lock();
            System.out.println(Thread.currentThread().getName() + " 得到锁");
            reentrantLock.unlock();
        }

    }

    /*
        公平锁：
            锁：等待的县城中，先到先得，后到后得。
                但是成本高，性能低，默认用“非公平锁”
     */
    public static void main(String[] args) {
        FairLock fairLock = new FairLock();
        Thread thread1 = new Thread(fairLock,"第一个线程");
        Thread thread2 = new Thread(fairLock,"第二个线程");
        Thread thread3 = new Thread(fairLock,"第三个线程");
        thread1.start();
        thread2.start();
        thread3.start();
    }
    //  第一个线程 得到锁
    //  第二个线程 得到锁
    //  第三个线程 得到锁
    //      一直重复这三个
}
